# import redis

# # 连接到本地Redis服务器
# db = redis.Redis(host='127.0.0.1', port=6379, decode_responses=True)

# def check_policy_duplicate(doc_number):
#     """
#     检查
#     :return: True表示重复，False表示不重复
#     """
#     # 使用"policies:doc_numbers"作为存储所有文号的SET的key
#     if db.sismember("policies:doc_numbers", doc_number):
#         return True
    
#     # 如果不重复，则添加到集合中
#     db.sadd("policies:doc_numbers", doc_number)
#     return False

# 使用示例
# print(check_policy_duplicate("国发〔2023〕15号"))  # 第一次调用返回False
# print(check_policy_duplicate("国发〔2023〕15号"))  # 第二次调用返回True


import psycopg2
import redis

# PostgreSQL 配置
PG_CONFIG = {
    'host': 'localhost',
    'port': 5432,
    'dbname': 'Policy_DB',
    'user': 'postgres',
    'password': 'postgres'
}

# Redis 配置
REDIS_CONFIG = {
    'host': 'localhost',
    'port': 6379,
    'db': 0
}

# 建立连接
pg_conn = psycopg2.connect(**PG_CONFIG)
pg_cursor = pg_conn.cursor()

redis_client = redis.Redis(**REDIS_CONFIG)

REDIS_SET_KEY = "policy_ids"

def load_all_policy_ids_to_redis():
    """
    从PostgreSQL读取所有政策id并导入到Redis集合中
    """
    pg_cursor.execute("SELECT policy_id FROM policy_content_table;")
    ids = pg_cursor.fetchall()
    # ids 是 [(1,), (2,), ...]
    for (policy_id,) in ids:
        redis_client.sadd(REDIS_SET_KEY, policy_id)
    print(f"导入 {len(ids)} 个政策 ID 到 Redis。")


def is_policy_duplicate(policy_id):
    """
    检查政策是否已存在（是否重复）
    """
    return redis_client.sismember(REDIS_SET_KEY, policy_id)


# 示例使用
if __name__ == "__main__":
    # 初次导入
    # load_all_policy_ids_to_redis()

    # 检查是否重复
    new_policy_id = "P_20240129_76cadcbb2e00d09b36347b5c0af02eca"
    if is_policy_duplicate(new_policy_id):
        print(f"政策 ID {new_policy_id} 已存在（重复）")
    else:
        print(f"政策 ID {new_policy_id} 是新的，可以导入")
        redis_client.sadd(REDIS_SET_KEY, new_policy_id)  # 导入 Redis
